<?php
// +----------------------------------------------------------------------
// | YotakuCMS
// +----------------------------------------------------------------------
// | Copyright (c) 2016 http://www.yotaku.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: Creatint <creatint@163.com> 
// +----------------------------------------------------------------------

namespace Home\Logic;
use Think\Model;

/**
 * 文档模型逻辑层公共模型
 * 所有逻辑层模型都需要继承此模型
 */
class BaseLogic extends Model{

	/**
	 * 构造函数，用于这是Logic层的表前缀
	 * @param string $name 模型名称
     * @param string $tablePrefix 表前缀
     * @param mixed $connection 数据库连接信息
	 */
	public function __construct($name = '', $tablePrefix = '', $connection = '') {
		/* 设置默认的表前缀 */
		$this->tablePrefix = C('DB_PREFIX') . 'document_'; 
		/* 执行构造方法 */
		parent::__construct($name, $tablePrefix, $connection);
	}

	/**
	 * 获取模型详细信息
	 * @param  integer $id 文档ID
	 * @return array       当前模型详细信息
	 */
	public function detail($id){
		$data = $this->field(true)->find($id);
		if(!$data){
			$this->error = '获取详细信息出错！';
			return false;
		}
		return $data;
	}

	/**
	 * 获取段落列表
	 * @param  array $ids 要获取的段落ID列表
	 * @return array      段落数据列表
	 */
	public function lists($ids,$order = '`id` DESC', $status = 1, $field = true){
		$map = array();
		if(1 === count($ids)){
			$map['id'] = $ids[0];
		} else {
			$map['id'] = array('in', $ids);
		}

		$data = $this->field($field)->where($map)->order($order)->select();
		$list = array();
		foreach ($data as $value) {
			$list[$value['id']] = $value;
		}
		return $list;
	}



	/**
	 * 获取扩展文档列表
	 * @param  array $ids 要获取的段落ID列表
	 * @return array      段落数据列表
	 */
	public function extlists($sql,$p=1,$row=10,$order = '`id` DESC', $status = 1, $field = true, $page = true){
        if($page){
            $data = $this->field($field)->where($sql)->order($order)->page($p,$row)->select();
        }else{
            $data = $this->field($field)->where($sql)->order($order)->select();
        }
		$list = array();
		foreach ($data as $value) {
			$list[$value['id']] = $value;
		}
		//dump($list);
		//exit;
		return $list;
	}


	/**
	 * 计算列表总数
	 * @param  number  $category 分类ID
	 * @param  integer $status   状态
	 * @return integer           总数
	 */
	public function listCount($category, $status = 1){
		return $this->count('id');
	}


	/**
	 * 计算搜索列表总数
	 * @param  number  $category 分类ID
	 * @param  integer $status   状态
	 * @return integer           总数
	 */
	public function listCountSearch($sql){
		return $this->where($sql)->count('id');
	}

	/**
	 * 新增或添加模型数据
	 * @param  number $id 文章ID
	 * @return boolean    true-操作成功，false-操作失败
	 */
	public function update($id = 0) {
		//设置自动验证规则
		$rules = array(
			array('platenumber','require','车牌号码必须填写'),
			array('platenumber','','车牌号码已存在',0,'unique',3),
		);

		/* 获取数据 */
		$data = $this->validate($rules)->create();
		if ($data === false) {
			return false;
		}

		if (empty($data['id'])) {//新增数据
			$data['id'] = $id;
			$data['uid'] = session('user_auth.uid');
			$id = $this->add($data);
			if (!$id) {
				$this->error = '新增数据失败！';
				return false;
			}
		} else { //更新数据
			$status = $this->save($data);
			if (false === $status) {
				$this->error = '更新数据失败！';
				return false;
			}
		}
		return true;
	}

//	/**
//	 * 删除模型数据
//	 * @param  number $id 文章ID
//	 * @return boolean    true-操作成功，false-操作失败
//	 */
//	public function delete($id = 0) {
//		if($this->where("`id`={$id}")->delete()){
//			return true;
//		}
//		return false;
//	}
}
